home *** CD-ROM | disk | FTP | other *** search
- /*
- InvoiceText.rexx
- $VER: 13 Jan 1998
- */
-
- arg iNameCode
-
- options results
-
- /* Initialize */
- Quote = '22'x
- cInvoice = 0
-
- DataPath = "S:TimeKeep/"
-
- if iNameCode = "" then do
- Say ""
- Say "ERROR: No Client Code"
- Say ""
- exit
- end
-
- /* Read Time Data */
- if ~ open('Time', DataPath||iNameCode||".time", 'R') then do
- Say ""
- Say "ERROR: .time NOT FOUND"
- Say ""
- exit
- end
-
- t = readln('Time')
- parse var t '"'Client.NameCode'","'Client.Name'"'
-
- /* Collate */
- Projects = "|"; nProjects = 0 ; Expenses = 0; Work = 0
- do while ~eof('Time')
- t = readln('Time')
- parse var t '"'tType'","'tProject'",'tInfo
-
- if tInfo == "" then leave
-
- if index(Projects, "|"tProject"|") = 0 then do
- /* Project not found */
- Projects = Projects||tProject"|"
- nProjects = nProjects + 1
- Projects.nProjects.Name = tProject
-
- if tType = "T" then do
- Projects.nProjects.count = 1
- Expenses.nProjects.count = 0
- end
- else do
- Projects.nProjects.count = 0
- Expenses.nProjects.count = 1
- end
-
- cProject = nProjects; n = 1
- end
- else do
- /* Project exists */
- do lp = 1 to nProjects
- if Projects.lp.Name = tProject then leave
- end
- cProject = lp
-
- if tType = "T" then do
- Projects.lp.count = Projects.lp.count + 1
- n = Projects.lp.count
- end
- else do
- Expenses.lp.count = Expenses.lp.count + 1
- n = Expenses.lp.count
- end
- end
-
- if tType = "T" then do
- Projects.cProject.n.Info = tInfo
- Work = 1
- end
- else do
- Expenses.cProject.n.Info = tInfo
- Expenses = 1
- end
- end
-
- call close('Time')
-
- if nProjects = 0 then do
- Say ""
- Say "ERROR: NO Logged Time or Expenses"
- Say ""
- exit
- end
-
- /* Read Invoice Number */
- if open('Invoice', DataPath||Client.NameCode||".invoice", 'R') then do
- cInvoice = readln('Invoice')
- call close('Invoice')
- end
-
- cInvoice = cInvoice + 1
-
- Client.Invoice = right(cInvoice, 2, "0")
-
- /* Create Invoice */
- call open('Out', DataPath"/TimeKeep/Invoice."Client.NameCode''Client.Invoice, 'W')
-
- /* Invoice # */
- call writeln('Out', "Invoice #"Client.NameCode''Client.Invoice)
-
- /* Client Name */
- 'Type' Client.Name
- call writeln('Out', Client.Name)
- call writeln('Out', "")
-
- /* Date */
- call writeln('Out', date())
- call writeln('Out', "")
- call writeln('Out', "")
-
- /* Work Description */
- call writeln('Out', "== WORK ===============================")
- call writeln('Out', "")
-
- /* Work Description - Projects */
-
- do lp = 1 to nProjects
- if Projects.lp.Name ~= "" then do
- call writeln('Out', " "Projects.lp.Name)
- call writeln('Out', " -")
- end
- end
-
-
- /* Expenses */
- TotalExpenses = 0
- if Expenses then do
- call writeln('Out', "")
- call writeln('Out', "== EXPENSES ===========================")
- call writeln('Out', "")
-
- do lp = 1 to nProjects
- if Expenses.lp.count = 0 then iterate
-
- call writeln('Out', " "Projects.lp.Name)
-
- do lp2 = 1 to Expenses.lp.count
- t = Expenses.lp.lp2.Info
- if index(t, '","', index(t, '","')+3) = 0 then do
- parse var t '"'tInfo'","'tAmount'"'
- call writeln('Out', " "tInfo" "tAmount)
- end
- else do
- parse var t '"'tInfo'","'tQuantity'","'tPer'","'tAmount'"'
- call writeln('Out', " "tInfo" ("tQuantity" @ "tPer") "tAmount)
- end
-
- TotalExpenses = TotalExpenses + tAmount
- end
- end
-
- call writeln('Out', "")
- call writeln('Out', " EXPENSES: $"TotalExpenses)
- end
-
-
- Total = 0
- if Work then do
- call writeln('Out', "")
- /* Work Hours */
- call writeln('Out', "== WORK HOURS =========================")
- call writeln('Out', "")
-
- do lp = 1 to nProjects
- if Projects.lp.count = 0 then iterate
-
- call writeln('Out', " "Projects.lp.Name)
-
- HSubTotal = 0
- do lp2 = 1 to Projects.lp.count
- parse var Projects.lp.lp2.Info '"'tDate'","'tT1'","'tT2'","'tH'","'tRate'"'
- call writeln('Out', " "tDate" "tT1" - "tT2" "tH)
- HSubTotal = HSubTotal + tH
- end
-
- SubTotal = trunc(HSubTotal * tRate + .5e-2, 2)
-
- call writeln('Out', " "HSubTotal" @ $"tRate" / hour: "SubTotal)
- Total = Total + SubTotal
- end
-
- call writeln('Out', "")
- call writeln('Out', " WORK: $"Total)
- end
-
- call writeln('Out', "")
- call writeln('Out', "=======================================")
- call writeln('Out', "")
-
- Total = Total + TotalExpenses
- call writeln('Out', " TOTAL: $"Total)
-
- call writeln('Out', "")
- call writeln('Out', "=======================================")
- call writeln('Out', "")
- call writeln('Out', "Payment To:")
- call writeln('Out', "")
- call writeln('Out', "dhomas trenn")
- call writeln('Out', "797 Mitchell Street, Fredericton, NB E3B 3S8")
- call writeln('Out', "(506) 459-7088")
- call close('Out')
-
- /* Write Invoice Number */
- call open('Invoice', DataPath||Client.NameCode||".invoice", 'W')
- call writeln('Invoice', cInvoice)
- call close('Invoice')
-
- /* Backup .time data file */
- ADDRESS COMMAND 'C:Rename' DataPath||Client.NameCode||".time" DataPath||Client.NameCode||".time."Client.Invoice
-
- exit
-